Relevancy-based video help in a video game

ABSTRACT

Techniques for improving a user video game experience are described. In an example, a computer system accesses videos showing separate completions of an activity by a plurality of video game players. From a definition of the activity, it is determined that the activity is a parent of sub-activities. Links to video portions of the videos are generated, wherein each video portion corresponds to a sub-activity. A score is generated for each video portion based on a relevance of each video portion to a user. The links are presented in a user interface to the user based on the score for each video portion, wherein upon selection of a first link, the user interface displays a first video to the user starting at a first video portion showing a completion of a sub-activity by a video game player.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.16/687,410, filed on Nov. 18, 2019, which is hereby incorporated byreference in its entirety for all purposes.

BACKGROUND

Video games are available on different computing devices. For example, auser operates a video game console and a mobile device to play a firstvideo game and a second video game, respectively. In addition, videogames are available from different sources. For example, the video gameconsole is operable to play multiple video games from two or moredifferent video game developers.

Given the increasing number of video games and their availability ondifferent computing devices and from different sources, the userexperience typically changes. For example, the way game play help may besought can vary significantly between video games. In addition, the waya particular part of a video game is surfaced on a computing device asbeing available for playing can be unique to the particular video game.

Hence, the user experience may not be common between the video gameplayers. There is a need for improving the user experience such that,regardless of the underlying video games, some commonality in video gamefunctionalities becomes possible.

BRIEF SUMMARY

Techniques for improving a user video game experience are described. Inan example, a computer system is used for presentation of videogame-related information. The computer system includes one or moreprocessors and one or more non-transitory computer readable storagemedia (e.g., one or more memories) storing instructions that, uponexecution by the one or more processors, cause the computer system toperform operations.

In an example, the operations include accessing video content of a gameplay of a video game player in a video game. The video content isassociated in a data store with an identifier of an activity completedby the video game player in the video game and with data indicating astart of the activity, an end of the activity, and an outcome ofcompleting the activity. The identifier of the activity is included inprogram code of the video game. The operations also include determiningthat the data indicates that the outcome is a successful completion ofthe activity. The operations also include generating information aboutthe activity. The information includes a link to a portion of the videocontent. The portion corresponds to the activity as shown in the videocontent or to a set of tasks within the activity. The operations alsoinclude presenting the information in a user interface to a user.

In an example, the operations further include recording the game play ofthe video game player as the video content, while recording the gameplay, receiving one or more events that include the identifier, thestart, the end, and the outcome, generating one or more associations ofthe video content with the identifier and of the portion of the videocontent with the start and the end, and storing the one or moreassociations in the data store. In this example, the operations furtherinclude sending the video content to a content system based on a requestof the video game player to share the video content, and storing, in thedata store, an indication of the video content being shared. The link isincluded in the information based on the indication. Additionally, theinformation is presented in a window over video game content of thevideo game, and the operations further include receiving a userselection of the link presented in the window, and receiving the videocontent from the content system based on the selection. In this example,the operations further include presenting the video content of the gameplay over the video game content of the video game based on a userselection of the video content presented in the window. In this example,the window further includes at least one of: (i) a first option topresent the video content of the game play adjacent to andsimultaneously with a presentation of the video game content of thevideo game, or (ii) a second option to present the video content of thegame play in a picture-in-picture window over and simultaneously withthe presentation of the video game content of the video game. In thisexample, the window further includes a map that corresponds to a zonewithin the video game. The map indicates an estimated position of wherea plurality of video game players completed the activity within thezone. In this example, the window further includes information aboutusing a mechanic to complete the activity based on a history of use ofthe mechanic by a plurality of video game players.

In an example, the video content is further associated in the data storewith an identifier of a mechanic used by the video game player tocomplete a task from the set of tasks of the activity. The portion ofthe video content corresponds to the task and shows the use of themechanic.

In an example, the operations further include ranking the video contentrelative to one or more other video contents that show the activity. Thevideo content is ranked based on a language setting of the video gameplayer and a language setting of the user. The operations furtherinclude selecting the video content to be included in the informationbased on the ranking.

In an example, the portion of the video content shows a use of amechanic by the video game player to complete the activity. In thisexample, the operations further include ranking the video contentrelative to one or more other video contents that show the activity. Thevideo content is ranked based on an availability of the mechanic to theuser.

In an example, the operations further include ranking the video contentrelative to one or more other video contents that show the activity. Thevideo content is ranked based on a characteristic of the video gameplayer in the video game and a characteristic of the user in the videogame.

In an example, the operations further include ranking the video contentrelative to one or more other video contents that show the activity. Thevideo content is ranked based on a difficulty setting associated withthe game play of the video game player in the video game and adifficulty setting associated with a game play of the user in the videogame.

In an example, the start and the end of the activity indicate acompletion time of the activity by the video game player. In thisexample, the operations further include ranking the video contentrelative to one or more other video contents that show the activity. Thevideo content is ranked based on the completion time.

In an example, the operations further include ranking the video contentrelative to one or more other video contents that show the activity. Thevideo content is ranked based on microphone audio of the video gameplayer being available with the video content.

In an example, the operations further include determining a success rateof the video content. The success rate is determined by at least:receiving, after a presentation of the video content to a second videogame player and before receipt of another identifier of a differentactivity completed by the second video game player in the video game,second data including the identifier of the activity and indicating asuccessful completion of the activity by the second video game player,and updating the success rate based on the second data. In this example,the operations further include ranking the video content relative to oneor more other video contents that show the activity. The video contentis ranked based on the success rate.

In an example, the activity is a task from a plurality of tasks thatform a second activity. In this example, the operations further includepresenting, in the user interface, a window in a first state. The windowidentifies the second activity and presented over video game content ofthe video game. The operations further include presenting the window inan expanded state upon a user selection of the second activity. Thewindow in the expanded state identifies the tasks of the secondactivity. The operations further include updating the window in theexpanded state to show the information about the activity upon a userselection of the activity from the tasks of the second activity. In thisexample, the window is updated to further show at least one of (i) a mapwithin a zone of the video game to complete the activity or (ii) secondinformation about using a mechanic to complete the activity. The atleast one of (i) the map or (ii) the second information are shownsimultaneously with the link to the portion of the video content.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example of a computing environment for collectingand processing video game events, according to embodiments of thepresent disclosure.

FIG. 2 illustrates an example of a system architecture for providingusers with contextual information regarding available game activities,according to embodiments of the present disclosure.

FIG. 3 illustrates another example of a system architecture, accordingto embodiments of the present disclosure.

FIG. 4 illustrates an example of a system for providing a data model fora universal data platform, according to embodiments of the presentdisclosure.

FIG. 5 illustrates an example of an activity hierarchy, according toembodiments of the present disclosure.

FIG. 6 illustrates an example of a user interface presented by a videogame console, according to embodiments of the present disclosure.

FIG. 7 illustrates a user interface presented on a display, according toembodiments of the present disclosure.

FIG. 8 illustrates an example of displaying video game help through auser interface, according to embodiments of the present disclosure.

FIG. 9 illustrates examples of presenting video game help in a userinterface, according to embodiments of the present disclosure.

FIG. 10 illustrates an example of determining associations betweenportions of video content and activity identifiers, according toembodiments of the present invention.

FIG. 11 illustrates an example of ranking of portions of video content,according to embodiments of the present disclosure.

FIG. 12 illustrates an example of a flow for determining video portionsshowing objects from event data, according to embodiments of the presentdisclosure.

FIG. 13 illustrates another example of presenting a video portion of thevideo content as help assistance to a user, according to embodiments ofthe present disclosure.

FIG. 14 illustrates an example of a hardware system suitable forimplementing a computer system, according to embodiments of the presentdisclosure.

DETAILED DESCRIPTION

Generally, systems and methods for improving a user video gameexperience are described. In an example, the user video game experienceis improved by providing a unified way for, among other things, multiplevideo game functionalities, such as for suggesting video gameactivities, estimating completion time for such activities, andpresenting video game help regardless of the underlying video games.This unified way need not change how a video game is developed ornecessitate a common approach to video game development. Instead,instrumentation of various events in the video games is relied upon,where a video game platform (e.g., a server-based video game service)can collect and process such events based on the execution of the videogames to suggest the video game activities, estimate completion times,and present the video game helps at a client level and, as needed, tocustomize such video game functionalities to the client level.

For instance, a video game includes a plurality of activities. When aninstance of the video game is executed for a video game player (whetherlocally on a computing device of the video game player or remotely onthe video game platform), the video game platform receives events aboutplayed activities and recorded video content showing how the video gameplayer played these activities. The video game platform stores suchevents as event data. For event data associated with a played activity,the event data includes an activity identifier of the activity andindicates type, its start time, its end time, and/or potentially itsoutcome (e.g., success or failure). Based on timing information from theevent data (e.g., start and end) and timing information of the videocontent, the video game platform determines the portion of the videocontent that shows the played activity and associates this portion withthe activity.

For instance, while receiving the video content showing a game play of avideo game by a video game player, the video game platform receives afirst event at time “t₁” and a second event at time “t₂”. The firstevent includes an activity identifier of an activity A in the video gameand indicates its start. The second event includes the same activityidentifier of activity A and indicates its end and successfulcompletion. Accordingly, the video game platform determines thatactivity A was played between times “t₁” and “t₂” and associates theportion of the video content between times “t₁” and “t₂” with theactivity identifier and with a successful completion, thereby indicatingthat this video portion shows the activity being successfully played.The association enables the video game platform to link activity A tothe video portion. In particular, the video game platform may generate alink to the keyframes in the video content at the start and endtimestamps (e.g., times “t₁” and “t₂”).

In an example, a user operating a computing device may not have playedactivity A before, may not have successfully completed it yet, or maydesire to view how other video game players have played activity A. Arequest for help may be received from the computing device. In response,the video game platform may send the link with information identifyingactivity A to the computing device. By selecting the link, the videoportion is displayed to the user and shows how activity A was played.

In an example, the video game platform may associate multiple videoportions from different video content of multiple video game playerswith the same activity (e.g., activity A) in a video game. Uponreceiving a request from a computing device of a user for help about theactivity, The video game platform ranks the video portions for the userbased on a set of factors and selects one or more of these videoportions to return based on the ranking. For a selected video portion,the video game platform returns the corresponding link. These factorsrelate to the video game players, the user, context(s) of the video gameplayers and/or the user in the video game, and/or context(s) of thevideo game players and/or the user on the video game platform. Theranking can involve generating a relevance score per video portion givenhow the sort factors are met and sorting the video portions based ontheir relevance scores.

Embodiments of the present disclosure provide many technical advantagesover existing video game platforms. For instance, functionalities of agraphical user interface (GUI) are improved. In particular, bycollecting events per activity, video game, and video game player, avideo game platform of the present disclosure can provide relevantassistance in the GUI and improve the quality of game play.

FIG. 1 illustrates an example of a computing environment for collectingand processing video game events, according to embodiments of thepresent disclosure. As illustrated, the computing environment includes avideo game console 110, video game player devices 130, a video gameplatform 150, a video game developer system 170, and a third partysystem 190. Video games are available to the video game console 110 fromthe video game developer system 170 through the video game platform 150.Video content, such as help videos demonstrating how video gameactivities can be played, is also available to the video game console110 from the third party system 190 through the video game platform 150.The video game platform 150 collects, stores, and processes events fromthe video game player devices 130 and the video game console 110 toprovide various video game-related functionalities including, forinstance, suggesting video game activities, estimating completion timefor such activities, and presenting video game help.

In an example, the video game console 110 represents a computing deviceavailable to a user 112 and operable to interact with one or moreapplications including video games. A display 120 communicativelycoupled or integrated with the video game console 110 can present videogame-related data, including video game content 122, to the user 112.Other types of computing devices can be available to the user 112including, for instance, a smartphone, a tablet, a laptop, a desktopcomputer, or other devices with suitable memories and processors.

The video game console 110 can execute a video game locally to presentthe video game content 122 on the display 120. Additionally oralternatively, the video game consoles 110 can receive the video gamecontent 122 based on an execution of an instance of the video gameapplication on the video game platform 150, the video game developersystem 170, or another remote computer system. The video game can alsobe downloadable to the video game console 110 from such systems.

Further, the video game console 110 can, directly or through the videogame platform 150, download or stream video content from the third partysystem 190 for presentation on the display 120. An example of videocontent includes a video file generated by the video game developer 170and uploaded to the third party system 190, where this video filedemonstrates how a video game can be played, a set of activities in thevideo game can be played, or a set of mechanics in an activity can beused to play the activity. A mechanic generally represents at least oneof a set of tools, a set of capabilities, or a set of skills availableto play an activity or a portion of an activity. Another example ofvideo content includes a video file generated by one of the video gameplayer devices and uploaded to the third party system 190 directly orthrough the video game platform 190, where the video file records thegame play of a video game player operating the video game player device.Likewise, a similar video file can be uploaded to the third party system190 from the video game console 110.

In an example, the video game player devices 130 represent computingdevices of video game players that may, but need not, include the user112. Similar functionalities can be provided on each one of the videogame player devices and the video game console 110.

In an example, the video game system 170 represents a computer systemthat includes a set of computing resources for developing video gamesand available to a video game developer. In particular, the video gamesystem 170 can store video game software 172, upload such software 172to the video game platform 150, and/or download such software 172 to thevideo game console 110.

The video game software 172 of a video game is program code executableto present and interact with video game content of the video game. Theprogram code can include predefined instrumentations to generate eventsupon the execution of the program code. In particular, the program codeincludes a set of event definitions 174, where an event definitionrepresents code defining an identifier of an event and data to bereported for the event. Examples of such event definitions 174 arefurther described herein below and are predefined in the program code ofthe video game according to event templates available from the videogame platform 150. Such event templates can be defined by a serviceprovider of the video game platform 150 and can be commonly used acrossmultiple video game developer systems 170.

In an example, the third party system 190 represents a computer system,such as one or more content servers, for providing video content 192 tothe video game console 110 directly or indirectly through the video gameplatform 150. As explained herein above, the video content 192 caninclude video files demonstrating how a video game can be played, a setof activities in the video game can be played, or a set of mechanics inan activity can be used to play the activity. The video content 192 canbe uploaded to the third party system 190 from the video game developersystem 170, the video game console 110, and/or one or more of the videogame player devices 130 directly or indirectly through the video gameplatform 150.

In an example, the video game platform 150 represents a computer systemthat provides various video-game related functionalities to the videogame console 110. For instance, the video game platform 150 is set-up asa hub between the video game console 110, the video game player devices130, the video game developer system 170, and third party system 190. Inparticular, the video game software 172 and the video content 192 can bedownloaded to the video game consoler 110 through the video gameplatform 150. An instance of a video game based on video game softwarestored on the video game platform 150 can be instantiated for the videogame console 110. A video file can be streamed through the video gameplatform 150 to the video game console 110. In addition, communicationsdata (e.g., messages, commands, etc.) can be exchanged between the videogame console 110 and the video game player devices 130 through the videogame platform 150.

Furthermore, the video game platform receives event data 114 from thevideo game console 110 and event data 132 from the video game playerdevices 130 and stores such received data in a data store 152 as eventdata 154. An event processor 156 of the video game platform 150processes the event data 154 to generate and send any of an activitytime estimation 162, an activity suggestion 164, and an activity help166 to the video game console 110 for presentation on the display 120.

Received event data (any of the event data 114 or event data 132)represents data reported from a device (e.g., the video game console 110or one of the video game player devices 130 as application) for an eventbased on an execution of program code of a video game, where the programcode includes an event definition for the event. The activity timeestimation 162 represents an estimated length of time to complete anactivity in the video game, which may be referred to herein ascompletion time. The activity suggestion 164 represents informationsuggesting an activity available to the user 112 in the video game andnot previously performed or completed by the user 112. An activity help166 includes information, such as a video file, textual description,and/or a graphical description about completing an activity in the videogame or using a mechanic in at least a portion of the activity. Theprocessor 156 executes logic that, for instance, performs a statisticalanalysis across a subset of the event data 154 associated with theactivity to generate the activity time estimation 162, the activitysuggestion 164, and the activity help 166. In addition, the processor156 can execute logic that customizes any of the activity timeestimation 162, the activity suggestion 164, or the activity help 166based on a context of the user 112 in the video game and/or within theplatform and on the type of the video game console 110.

Generally, an activity is a unit of game play inherent to the structureof a video game. Different categories of activities exist includingprogress activities, competitive activities, challenge activities, andopen-ended activities. The activity can be defined in a program code asobject with multiple properties. The properties include an activityidentifier, a name, and a category. The activity identifier is a uniqueidentifier of the activity. When an event about the activity is reportedto the video game platform 150, the corresponding event data refers tothe activity identifier. The name can be a short localized name of theactivity. Other properties are possible including, for instance, adescription (e.g., a longer description of the activity), an image ofthe activity, a default availability (e.g., whether the activity isavailable to all video game players before launching the video game),whether completion of the activity is required to complete the videogame, whether the activity can be played repeatedly in the video game,and nested tasks (child activities, also referred to herein assub-activities). Multiple events about the activity are possible.

An example of an event about the activity can indicate changes inactivity availability for a video game player (e.g., the user 112). Thisis primarily used to decide what activities to display and to removespoiler block for those activities (where an activity having a spoilermay not be surfaced to the video game player). A property of this eventincludes, for instance, a list (e.g., array) of activities that arecurrently available.

An example of an event about the activity can indicate that the videoplayer is currently participating in the activity or task (e.g., a childactivity). A property of this event includes, for instance, the activityidentifier of the activity. Another property can optionally be a timecorresponding to the start of the participation in the activity.

An example of an event about the activity can indicate the end of theactivity or task (e.g., a child activity). A property of this eventincludes, for instance, the activity identifier of the activity. Anotherproperty can optionally be a time corresponding to the end of theparticipation in the activity. Yet another property can optionally be anoutcome of the activity, such as completed, failed, or abandoned.

The video game platform 150 can also collect data about a zone in avideo game, where this data is reported similarly to the events based onpredefinitions in program code of the video game. The zone represents anarea of a game world of the video game (e.g., a virtual world) with asingle coordinate system. The zone may have a two-dimensional (2-D) mapimage associated with it, used to display locations on the zone. Thezone can be defined in the program code as an object with multipleproperties. The properties include a zone identifier and a name. Thezone identifier is a unique identifier of the zone. The name can be ashort, localizable name of the zone. Other properties are possibleincluding, for instance, an indication of whether the object should betreated as hidden for spoiler block uses cases (the default may be setto false), a map (e.g., a high resolution image for the zone 2-D map), aview projection (e.g., a matrix (4×4) to convert from three-dimensional(3-D) work coordinates to 2-D map position), and an image (e.g., adisplay image for the zone if different from the map). Multiple eventsabout the zone are possible.

An example of an event about the zone can indicate an update to thecurrent in-game location of the video game player. This event can bereported regularly, or whenever the player's in-game location changessignificantly. A property of this event includes the zone identifier.Other properties are possible, such as optionally position (e.g., x,y,zposition of the video game player character (the virtual player of thevideo game player) in the zone) and orientation (e.g., x,y,z vectorindicating the video game player character's direction).

Another example of an event about the zone can indicate the video gameplayer's zone, location, and orientation, at the time of starting theactivity. This event can enable location-based help. A property of thisevent includes the activity identifier. Other properties are possible,such as optionally the zone identifier and the position and orientationof video game player's character in the video game.

Yet another example of an event about the zone can indicate the videogame player's zone, location, and orientation, at the time of ending theactivity. This event can also enable location-based help. A property ofthis event includes the activity identifier. Other properties arepossible, such as optionally the outcome of the activity, the zoneidentifier, and the position and orientation of video game player'scharacter in the video game.

The video game platform 150 can also collect data about an actor in avideo game, where this data is reported similarly to the events based onpredefinitions in program code of the video game. The actor representsan entity with behaviors in the video game. The actor can beplayer-controlled or game-controlled, and this can change dynamicallyduring game play. The actor can be defined in the program code as anobject with multiple properties. The properties include an actoridentifier and a name. The actor identifier is a unique identifier ofthe actor. The name can be a localizable name of the actor. Otherproperties are possible including, for instance, an indication ofwhether the object should be treated as hidden for spoiler block usescases (the default may be set to false), an image of the actor, and ashort description of the actor. Multiple events about the actor arepossible.

An example of an event about the actor can indicate that a change to thevideo game player's selection of actor(s). Selected actors represent theactors the video game player is controlling in the video game, and canbe displayed on the video game player's profile and other presentationspaces. There can be more than one actor selected at a time. The videogame should replace the list of actors upon loading save data. Aproperty of this event includes a list (e.g., array) of actors which arecurrently selected by the video game player.

The video game platform 150 can also collect data about a mechanic in avideo game, where this data is reported similarly to the events based onpredefinitions in program code of the video game. The mechanicrepresents an item (e.g., tool), capability, skill, or effect that canbe used by the video game player or the video game to impact game play(e.g. bow, arrow, stealth attack, fire damage). The mechanic generallyexcludes items that do not impact game play (e.g. collectibles). Themechanic can be defined in the program code as an object with multipleproperties. The properties include a mechanic identifier and a name. Themechanic identifier is a unique identifier of the mechanic. The name canbe a short, localizable name of the mechanic. Other properties arepossible including, for instance, an indication of whether the objectshould be treated as hidden for spoiler block uses cases (the defaultmay be set to false), an image of the mechanic, and a short descriptionof the mechanic. Multiple events about the mechanic are possible.

An example of an event about the mechanic can indicate that mechanicsavailable to the video game player have changed. Availability of amechanic represents that the mechanic is available in the game world forthe video game player to use, but may necessitate the video game playerto go through some steps to acquire it into inventory (e.g. downloadfrom a store, pick up from the world) before using it. This event canalso be used to indicate lifting of spoiler block on the mechanicobject, and to filter help tips to avoid suggesting use of a mechanicthat is unavailable. The video game should replace the list of mechanicsupon loading save data. A property of this event includes a list (e.g.,array) of mechanics which are currently available.

Another example of an event about the mechanic can indicate that thevideo game player's inventory has changed. Inventory refers to mechanicsthat are immediately usable to the video game player without having totake additional steps in the video game before using it. Inventoryinformation can be used to estimate a player's readiness for anactivity. The video game should replace the list of inventory uponloading save data. A property of this event includes a list (e.g.,array) of mechanics which are currently in inventory.

Yet another example of an event about the mechanic can indicate that thevideo game player's load out has changed. Load out represents themechanics that are most immediately accessible to the video player, andis the subset of inventory which is displayable to the video gameplayer. The video game should replace the list of mechanics upon loadingsave data. A property of this event includes a list (e.g., array) ofmechanics which are now part of the active load out.

A further example of an event about the mechanic can indicate that themechanic has been used by or against the video game player. Propertiesof this event include a list (e.g., array) of mechanics which were used(e.g. fire arrow, fire damage) and whether the mechanics were used by oragainst the video game player. Other properties are possible, such asoptionally an initiator actor identifier (e.g., an identifier of theactor that initiated the use of the mechanic), a zone identifier of theinitiator actor, and a position of the initiator actor.

Another example of an event about the mechanic can indicate that themechanic had an impact on game play (e.g. an arrow hit a target).Properties of this event include a list (e.g., array) of mechanics whichwere used (e.g. fire arrow, fire damage) and whether the mechanics wereused by or against the video game player. Other properties are possible,such as optionally the initiator actor identifier, the zone identifierof the initiator actor, the position of the initiator actor, a targetactor identifier (e.g., an identifier of the actor targeted by themechanic), a zone identifier of the target, a position of the targetactor, and an identifier of a mechanic that mitigates the initiator'smechanic(s).

The video game platform 150 can also collect data about game media in avideo game, where this data is reported similarly to the events based onpredefinitions in program code of the video game. The game mediarepresents a piece of media (text, audio, video, image) related to thevideo game, provided by the game developer. The game media may existin-game (e.g. cut-scene, audio log, book) or may not (e.g. developercommentary). The game media can be defined in the program code as anobject with multiple properties. The properties include a game mediaidentifier, a name, a format, a category, an unlock rule, and a uniformresource locator (URL). The game media identifier is a unique identifierof the game media. The name can be a localizable name of the game media.The format can indicate the media format, such as whether the game mediais an image, audio, video, text, etc. The category indicates a type ofthe game media, such as whether the game media is a cut-scene,audio-log, poster, developer commentary, etc. The unlock rule indicateswhether the game media should be unlocked for all video game players orbased on an activity or a specific game media event. The URL referencesa server-provisioned media file, where this server can be part of thegame developer system 170 or the video game platform 150. Otherproperties are possible including, for instance, an indication ofwhether the object should be treated as hidden for spoiler block usecases (the default may be set to false), an entitlement (e.g.,indicating that only video game players who own a particular video gameentitlement can unlock the game media), and an activity identifier(e.g., to associate the game media with a particular activity). Multipleevents about the game media are possible.

An example of an event about the game media can indicate that aparticular piece of game media has been unlocked for the video gameplayer. A property of this event includes the game media identifier.

Another example of an event about the game media can indicate that aparticular piece of game media has started in the video game. The gamemedia object should be considered unlocked for the video game player atthe corresponding time. A property of this event includes the game mediaidentifier.

Yet another example of an event about the game media can indicate that aparticular piece of game media has ended in the video game. A propertyof this event includes the game media identifier.

FIG. 2 illustrates an example of a system architecture for providingusers with contextual information regarding available game activities,according to embodiments of the present disclosure. In some embodiments,the exemplary system architecture 200 includes a game client 205, auniversal data system (UDS) software development kit (SDK) 210, consolesystem software 215, a local rule engine 220, a UDS server 225, a gameserver 230, processed data 235, and one or more other remote networkedservices, including a help service 240, game plan 245, user generatedcontent (UGC) tagging 250, and other service(s) 255. The help service240 may also receive information from other data source(s) 260. Some ofthe components of the system architecture 200 are examples of componentsof the video game platform 150 of FIG. 1 . For instance, the UDS server225 and the game server 230 are components of the video game platform150.

The game client 205 and game server 230 provide contextual informationregarding at least one application to a universal data system (UDS)server 225 via a UDS data model describing the logical structure of UDSdata used by the UDS SDK 210. The UDS data model enables the platform(e.g., the video game platform 150) to realize remote networkedservices, such as the help service 240, game plan 245, UGC tagging 250,and other service(s) 255 that require game data, without requiring agame to be patched separately to support a service. The UDS data modelassigns contextual information to a portion of information in a unifiedway across games. The contextual information from the game client 205and UDS SDK 210 is provided to the UDS server 225 via the console systemsoftware 215. It is to be understood that the game client 205, UDS SDK210, console system software 215, and local rule engine 220 may run on acomputer or other suitable hardware for executing at least oneapplication.

The UDS server 225 receives and stores contextual information from thegame client 205 and game server 230 from at least one application. To besure, the UDS server 225 may receive contextual information from aplurality of game clients and game servers for multiple users. Theinformation may be uniformly processed 235 and then received by theplurality of remote networked services 240, 245, 250, and 255.

FIG. 3 illustrates another example of a system architecture 300,according to embodiments of the present disclosure. A game client 305sends contextual information to a UDS server 310, which provides thecontextual information in a unified data model to a plurality of remotenetworked services, including profile stats 315, game plan 320, sessions325, tournaments 330, presence 335, and help system 340.

FIG. 4 illustrates an example of a system 400 for providing a data modelfor a universal data platform 410, according to embodiments of thepresent disclosure. Some of the components of universal data platform410 are examples of components of the video game platform 150 of FIG. 1. In one example embodiment, system 400 can include at least one device430 configured to execute at least one of a plurality of applications432, each application having an application data structure. Theuniversal data platform 410 can be executed on one or more servers. Theuniversal data platform 410 can include a data model which is uniformacross the plurality of application data structures. The data model caninclude metadata 412 corresponding to at least one object indicated inthe data model, and events 414 corresponding to a trigger conditionassociated with at least one metadata entry. The values of the metadata412 and events 414 can be associated with a user profile. The universaldata platform 410 can be configured to receive application data from theat least one device 430 and store the application data within the datamodel. The system 400 can also include a plurality of remote networkedservices 420 configured to access the application data from theuniversal data platform 410 using the data model.

In various embodiments, the metadata 412 may include: a list of allactivities that a user can do in an application, an activity name, adescription of the activity, a state of the activity (whether available,started, or completed), whether the activity is required to complete anobjective or campaign, a completion reward for the activity, an intro oroutro cut-scene, an in-game location, one or more conditions that mustbe met before the activity becomes available, and a parent activity thatcontains the activity as a sub-activity. Metadata 412 may furtherinclude: a list of abilities exercisable by the user, effects of eachaction, telemetry indicative of when actions and effects take placeincluding corresponding timestamps and locations, an in-game coordinatesystem, a list of in-game branch situations, and telemetry indicative ofwhen a branch situation is encountered and which option is selected bythe user. A list of in-game statistics, items, lore, in-game zones andcorresponding attributes regarding each statistic, item, lore, or zonemay likewise be included in the metadata 412. In addition, the metadata412 may indicate whether or not a particular activity, entity (such as acharacter, item, ability, etc.), setting, outcome, action, effect,location, or attribute should be marked as hidden.

Events 414 may be fired in response to several various triggerconditions. For example, such trigger conditions may include: anactivity that was previously unavailable becomes available, a userstarts an activity, a user ends an activity, an opening or endingcut-scene for an activity begins or ends, the user's in-game location orzone changes, an in-game statistic changes, an item or lore is acquired,an action is performed, an effect occurs, the user interacts with acharacter, item, or other in-game entity, and an activity, entity,setting, outcome, action, effect, location, or attribute is discovered.The events 414 may include further information regarding a state of theapplication when the events 414 were triggered, for example a timestamp,a difficulty setting and character statistics at the time a user startsor ends an activity, success or failure of an activity, or a score orduration of time associated with a completed activity. It is to beunderstood that metadata 412 and events 414 may include any and allcontextual information related to activities described in the presentdisclosure.

FIG. 5 illustrates an example of an activity hierarchy, according toembodiments of the present disclosure. As illustrated, an activity 510can include multiple nested tasks, referred to herein as sub-activities,forming a hierarchy 500. The activity 510 can be a node on top of thehierarchy 500 (e.g., a root node) and can have a set of childsub-activities 520A-520K at the next level of the hierarchy 500. Inturn, each one of the sub-activities 520A-520K may be a child node ofthe activity 510 and, possible, a parent node to a set of sub-activitiesat the next hierarchy level. For instance, the sub-activity 520K is aparent node to a set of sub-activities 530A-530L. This type ofassociation between nodes, each representing a sub-activity, can berepeated at the different levels of the hierarchy 500. A set ofmechanics can be associated with each node indicating that suchmechanic(s) can be available or usable in the activity corresponding tothe node.

As explained herein above, the activity 510 has an activity identifier.Each sub-activity also represents an activity and, thus, has an activityidentifier too. Likewise, each of the mechanics has a mechanicidentifier. Associations between the activity identifiers themselves andbetween the activity identifiers and the mechanic identifiers can bedefined based on the hierarchy 500. Such associations can be stored inobjects that define the activities (or sub-activities) and/or thatdefine the mechanics and/or can be stored in events that relate to suchobjects. For instance, the activity identifier of the sub-activity 520Kcan be associated with the activity identifier of the activity 510and/or the activity identifiers of the sub-activities 530A-530L.Similarly, the activity identifier of the sub-activity 530L can beassociated with the activity identifier of the sub-activity 520L and/orthe mechanic identifiers of the mechanics 540A-540M. Further, a mechanicidentifier of a mechanic can be associated with an activity identifier.

FIG. 6 illustrates an example of a user interface presented by a videogame console (e.g., the video game console 110 of FIG. 1 ), according toembodiments of the present disclosure. The user interface 604 presents aportion of video content 602 associated with an activity identifier ofan activity in a video game. This video portion is received from a videogame platform (e.g., the video game platform 150 of FIG. 1 ) and showshow the activity can be played.

As illustrated by FIG. 6 , the portion of video content 602 that isassociated with the activity identifier is indicated by the playback bar606 with a portion start point 607 and a portion end point 608. Incertain cases, multiple video portions can show the activity and cancorrespond to different video game content of multiple video gameplayers (e.g., video portions corresponding to game plays of differentvideo game players). The video game platform may generate multiplelinks, each link being to one of the video portions from different videocontent showing the activity, Based on a ranking of such video portions,the user interface 604 presents the video portions in different pagesand these pages can be accessed by interacting with a selection bar 610.In the example illustrated by FIG. 6 , the three video portions can beshown in the user interface 604. In FIG. 6 , a first video portion isselected for presentation, however, the user interface 604 can receiveuser input (e.g., a mouse-click, a controller button, a touch gesture)at the selection bar 610 to select the second video portion or the thirdvideo portion. The user interface 604 indicates the selected portion ofvideo content by adjusting the selection bar 610 (e.g., illuminating thesecond dash or the third dash of the selection bar 610, respectively).

The user interface 604 may also receive control inputs from a video gameplayer by receiving a selection of one or more of replay controls 612that enable the user to play, rewind, fast forward, loop, or adjust thesize of the portion of video content 602 (e.g., full screen, halfscreen, etc.). Other data can be shown in the user interface 604. Forinstance, the user interface 604 can present simultaneously with theportion of video content 602, a map that corresponds to a zone withinthe video game and/or information (e.g., text) about using a mechanic tocomplete the activity. The map indicates an estimated position of wherea plurality of video game players completed the activity within the zoneand can be generated from event data of such players showing activityends of the activity at certain positions within the zone.

FIG. 7 illustrates a user interface 700 presented on a display (e.g.,the display 120 of FIG. 1 ), according to embodiments of the presentdisclosure. The user interface 700 shows various information andfunctionalities that relate to a video game. In an example, video gamecontent 702 may be presented in a portion of the display. The userinterface 700 may also display relevant activity cards on a portion ofthe user interface 700. Each activity card can be presented as a window,icon, or some other GUI element, include information about an activity,and can be selected to launch the activity or request help about theactivity.

In one example, the video game has three relevant activities to a videogame player. These and other activities may be determined based on oneor more activities that the video game player is involved in in thevideo game or other applications available from the video game consoleand/or the video game platform. Accordingly, the user interface 700displays three activity cards, each corresponding to one of theactivities (illustrated in FIG. 7 as activity cards for Activity A 706,Activity B 708, and Activity C 710). In some cases, the user interface700 may present an average or expected time in the activity card toassist with a user election of an activity card.

FIG. 8 illustrates an example of displaying video game help through auser interface 800, according to embodiments of the present disclosure.Initially, the user interface presents an activity card 810 for anactivity (e.g., corresponding to a selected activity card from theactivity cards of FIG. 7 ). Upon a user interaction with the activitycard 810, the user interface presents an expanded activity card 830showing sub-activities of the activity. Upon a user interaction with asub-activity, the user interface presents a help card 850 that includeslinks to video portions that show how the sub-activity can be played.

In one example, the activity card 810 includes a header section 812, anactivity identifier 814, and an activity description 820 about theactivity. In comparison, the expanded activity card 830 includesadditional information related to the activity. In the exampleillustrated by FIG. 8 , the expanded activity card 830 includes a listof some of the available sub-activities 840 available for completion bya video game player. The user interface may receive a selection of asub-activity 842 within the expanded activity card 830. In the currentexample, the user interface 800 receives a selection of the sub-activity842 “Go for a Warm Up Lap” from the list of sub-activities 840.

The user interface receives the selection of sub-activity 842 anddisplays the help card 850 including additional details and helpspecific to the sub-activity 842. The help card 850 includes a title 852of the sub-activity 842, a video portion 854, and video playbackcontrols 856. The organization of the title 852 and video portions canbe similar to FIG. 6 .

FIG. 9 illustrates examples of presenting video game help in a userinterface, according to embodiments of the present disclosure. In someembodiments, the user interface receives a selection of help card (e.g.,the help card 850 of FIG. 8 ) and presents a configuration menu 902 ofdisplay configuration options. In some examples, a pin to side optionfrom the configuration menu 902 corresponds to showing the help card 850or a video portion from the help card 850 (e.g., the video portion 854in a side-pane 904). If this option is selected, the user interfacepresents the help card 850 or the video portion in a window adjacent tothe window showing video game content 906, while the execution of thevideo game continues. A picture-in-picture option from the configurationmenu 902 corresponds to showing the help card 850 or the video portion,in a picture-in-picture 908 window, superimposed over the video gamecontent 906. The video game content 906 may continue at normal orfractional speed while help information is presented in a pinned to sideor picture-in-picture setting. Other presentations of the video card 950or the video portion are possible. For instance, upon a particular userinteraction with the video portion 854 (e.g., a double-click), the videoportion is displayed using an expanded format (e.g., full screen). Inthis case, the video game content 906 may be paused.

FIG. 10 illustrates an example of determining associations betweenportions of video content and activity identifiers, according toembodiments of the present invention. For instance, the video gameplatform receives video content (e.g. a video segment or a full videofile) showing multiple activities or sub-activities, each of whichhaving a unique activity identifier. The video game platform, associatesthe activity identifiers with portions of the video content, andgenerates links to the portions of the video content.

In one example, the video game platform receives a video content 1000from a video game console operated by a video game player. The videocontent 1000 includes a segment start 1002, various intermediatetimestamps (timestamps 1004-1012, collectively “the timestamps” and eachof which corresponding to a keyframe), and a segment end 1014. The videocontent 1000 may be of any length and may be recorded by the video gameconsole and shows the game play of the video game player in a videogame. The video game platform may also receive event data 1020 from thevideo game console corresponding to various events generated while thevideo game is being executed. The event data 1020 can include activityidentifiers of activities played by the video game player in the videogame, zone identifiers corresponding to areas of a game world of thevideo game where the activities were played, mechanic identifiers ofmechanics used to play the activities, timing information (e.g., startand end) for each activity, presence in a zone, use of a mechanic, andother data related to the game play (e.g., outcomes of playing theactivities, impacts of used mechanics, etc.).

The video game platform associates the identifiers of the activities,zones, and/or mechanics with the timestamps 1004-1012 (or thecorresponding keyframes) to identify video portions of the video content1000 where the corresponding activities, zones, and/or mechanics areshown. In the example illustrated by FIG. 10 , the event data 1020indicates a zone change 1024 (e.g., the video game player entered aparticular zone), an Activity A start 1026, a first mechanic A1 change1028 (e.g., the video game player changed to using a mechanic A1), asecond mechanic change 1030, and an Activity A end 1032.

In this example, the video game platform identifies, among other things,a first video portion 1050 of the video content 1000 that showing thezone, a second video portion 1060 of the video content 1000 showing theActivity A, and a third video portion 1070 of the video content 1000showing the mechanic A1. In particular, the video game platformdetermines that the zone change 1024 corresponds to the timestamp 1004and, thus, sets the start of the first video portion 1050 to thetimestamp 1004 (or the corresponding keyframe). Similarly, the videogame platform determines that the Activity A start 1026 corresponds tothe timestamp 1006 and that the activity A end 1032 corresponds to thetimestamp 1012 and, thus, that the Activity A is shown in the video gamecontent 1000 between the timestamps 1006 and 1012. Accordingly, thevideo game platform sets the start and the end of the second videoportion 1060 to the timestamp 1006 and the timestamp 1012, respectively(or the corresponding keyframes). Further, the video game platformdetermines that the mechanic A1 is shown between the mechanic A1 change1028 and the second mechanic change 1030 and that these eventscorrespond to the timestamps 1008 and 1010, respectively. Accordingly,the video game platform sets the start and the end of the third videoportion 1070 to the timestamp 1008 and the timestamp 1010, respectively(or the corresponding keyframes). For each of the video portions1050-1070, the video game platform can generate links to the video gamecontent 1000, where the link of a video portion identifies the starttimestamp and the end timestamp (or, equivalently, the start keyframeand the end keyframe) for the video portion. The video game platformstores, in a data store (e.g., the data store 152 of FIG. 1 ), theassociations between the different identifiers and timestamps, the startand end of each video portion and the associated identifier, the links,and/or metadata describing what each video portion shows.

The above example is provided for illustrative purposes. The embodimentsof the present disclosure are not limited as such. In particular, thevideo game platform can associate video portions of the video gamecontent with different activities, combinations of activities and a setof tasks of the activity (e.g., the sub-activities described inconnection with FIG. 5 ), mechanics, zones, shown actors, shown targets,and/or any combination of objects defined in program code of the videogame and for which events are received and stored.

FIG. 11 illustrates an example of ranking of portions of video content,according to embodiments of the present disclosure. In particular, avideo game platform (e.g., the video game platform 150 of FIG. 1 )processes event data stored in a data store (e.g., the event data 154stored in the data store 152 of FIG. 1 ) to determine video portions ofvideo content associated with activities not completed by a user, rankthe video portions, and present the relevant video portions based on theranking.

In an example, a user request for help with an activity is received. Theuser request can include the activity identifier. The video gameplatform uses the activity identifier in a look-up to a data store todetermine video portions that are associated with the activityidentifier. These video portions define a set of candidate videoportions. In addition, the video game platform determines whether anyvideo portion from the set includes a spoiler to the user (e.g., basedon the event data as described in connection with spoiler blocks in FIG.1 ). If a spoiler is included, the candidate video portion is removedfrom the set. The remaining set includes video portions that are thensubject to the ranking and that are referred to herein as candidatevideo portions.

Each of the candidate video portions can be ranked according to a set ofsort factors. These factors relate to other video game players, theuser, context(s) of the other video game players and/or the user in anapplication (e.g., a video game application), and/or context(s) of theother video game players and/or the user on the video game platform. Theranking can involve generating a relevance score per candidate videoportion content given how the sort factors are met and sorting thecandidate video portions based on their relevance scores.

The highest ranked candidate video portions (e.g., the top three, orsome other number) can be identified to the user in the user interface.In particular, links to these video portions are sent to one or morecomputing devices of the user and presented thereat, as illustrated inconnection with FIG. 7 .

As illustrated in FIG. 11 , the sort factors include language 1102,mechanic availability 1104, in-game characteristics 1106, difficultysetting 1108, audio presence 1110, completion time 1112, and qualityfeedback 1114. Each of these factors is described herein next. Ofcourse, not all of the sort factors may be used. In addition, other sortfactors related to generating candidate portions of video content basedon event data can be defined and used.

In an example, the language 1102 is a sort factor indicating thelikelihood of the user understanding the spoken language in a candidatevideo portion. As described above, the candidate video portioncorresponds to video content of a video game player. Accordingly, thevideo portion can include a recording of audio corresponding to naturallanguage utterances of the video game player. The higher the likelihoodof the spoken language of the user matching the spoken language of thevideo game player, the higher the score for this sort factor is (e.g.,referred to herein as a language score). In an example, the matchbetween spoken languages is determined based on language settings of theuser and the video game player.

In an example, the mechanic availability 1104 is a sort factorindicating the likelihood of the user's interest in using a mechanicshown in the candidate video portion. As described above, the candidatevideo portion can show a mechanic and be associated with thecorresponding mechanic identifier. The video game platform can determinefrom an inventory associated with the user whether the inventoryincludes the mechanic identifier. If so, the score for this sort factor(e.g., referred to herein as a mechanic score) is increased. Further,the video game platform can analyze a history of the user's game play todetermine the familiarity of the user with using the mechanic. The morefamiliar the user is (e.g., the more frequently the user has used themechanic and/or the frequency of positive impact of the mechanic in thegame play), the higher the mechanic score is.

In an example, the in-game characteristics 1106 is a sort factorindicating the likelihood of the user having in-game characteristicsthat match the in-game characteristics of the video game player. Whenthe video content was recorded by the video game player, the video gameplayer may have been playing the video game with certain in-gamecharacteristics (e.g., at an expert level). If the user is requestingthe video help while having matching in-game characteristics (e.g., theuser is also playing the activity at the expert level), the score forthis sort factor (e.g., referred to herein as an in-game characteristicsscore) can be set to high.

In an example, the difficulty setting 1108 is a sort factor indicatingthe likelihood of the user playing the activity at the same difficultylevel as the video game player. When the video content was recorded bythe video game player, the video game player may have been playing thevideo game at a certain difficulty setting. If the user is requestingthe video help while playing the game at the same difficulty level, thescore for this sort factor (e.g., referred to herein as a difficultyscore) can be set to high.

In an example, the audio presence 1110 is a sort factor indicatingwhether the video portion includes microphone audio of the video gameplayer. When the video content was recorded by the video game player,the video game player may have used a microphone. The resultingmicrophone audio captures natural language utterances of the video gameplayer. If the microphone audio is included, the score for this sortfactor is set to high (e.g., referred to herein as an audio score).Further, the higher the quality of this audio is, the higher the audioscore is.

In an example, the completion time 1112 is a sort factor indicating thelength of time used by the video game player to complete an activityshown in the candidate video portion. The completion time can be boundedby an upper limit and a lower limit. If outside this bounded range(e.g., too long or too short), the candidate video portion is scored lowor even removed from the set of candidate video portions. If within thebounded range, the score for this score factor is set as a function(e.g., the inverse) of the length of time (e.g., referred to herein as acompletion time score). The completion time can be estimated from theevent data about the activity. For instance, the completion time isestimated as the time duration between the start and the end of theactivity.

In an example, the helpfulness feedback 1114 is a sort factor indicatinghow helpful the candidate video portion is relative to an activity or amechanic shown in the candidate video portion. In one illustration, thehelpfulness feedback 1114 is based on user inputs of video game playersthat have viewed the candidate portion and performed the activity and/orused the mechanic. The user inputs can be received as an explicit rating(e.g., a number of stars from five stars, a number of likes, etc.). Inthis case, the score for this sort factor (e.g., referred to herein as ahelpfulness score) is set as a function of the explicit rating (e.g.,average star rating, ratio of likes to dislikes, etc.). In anotherexample, the helpfulness score is generated from implicit feedback. Theimplicit feedback can be determined from event data of a plurality ofvideo game players that viewed the candidate video portion and thenperformed the activity and/or used the mechanic. In particular, asuccess rate of viewing the candidate video portion and thensuccessfully completing the activity or using the mechanic can becomputed from the event data. The helpfulness score can be set as afunction (e.g., proportional or equal) of the success rate. Forinstance, event data of a second video game player that has watched thecandidate portion can be analyzed. If the event data indicates that thissecond video game player viewed the candidate video portion andimmediately (e.g., following the end of this viewing, the event datashows that events about the activity and/or mechanic were receivedbefore any events about another activity and/or another mechanic) orwithin a predefined time duration (e.g., following this viewing, theevent data shows that events about the activity and/or mechanic werereceived before the end of the predefined time duration, where eventsabout another activity and/or mechanic may have also been receivedduring the predefined time duration) performed the activity and/or usedthe mechanic and had a successful outcome and/or a positive impact, thehelpfulness score is increased.

Each of the language score, mechanic score, in-game characteristicsscore, difficulty score, audio score, completion time score, andhelpfulness score can be associated with a weight (illustrated in FIG.11 as weights W_(i), where “i” is between “1” and “7”). The weights canbe predefined (e.g., based on a user setting such that the weights arepersonalized to the user; based on input of the video game developer) orset to default values.

A weighted sum 1120 of the individual scores of the sort factors can becomputed, resulting in a total score. The total score can be set as arelevance score 1130. The relevance score 1130 can then be used to rankthe candidate video portions relative to other candidate video portions.

FIGS. 12-13 illustrate example flows for providing video portions ofvideo content as help assistance. The operations of the flows can beimplemented as hardware circuitry and/or stored as computer-readableinstructions on a non-transitory computer-readable medium of a computersystem, such as a video game console and/or a video game platform. Asimplemented, the instructions represent modules that include circuitryor code executable by a processor(s) of the computer system. Theexecution of such instructions configures the computer system to performthe specific operations described herein. Each circuitry or code incombination with the processor represents a means for performing arespective operation(s). While the operations are illustrated in aparticular order, it should be understood that no particular order isrequired and that certain operations can be omitted.

FIG. 12 illustrates an example of a flow for determining video portionsshowing objects from event data, according to embodiments of the presentdisclosure. The objects can be any of a zone, an activity, a mechanic,and/or any other objects described in connection with FIG. 1 .

In an example, the flow includes operation 1202, where the computersystem accesses video content of a game play of a video game player in avideo game. For instance, the video game player may operate the videogame console to play the video game. A game play record option can bepresented on a user interface to the video game player. Upon a userselection of this option, the video game console can record videocontent showing the content and send this video game content to thevideo game platform and/or the video game platform can directly recordthis video content.

In an example, the flow includes operation 1204, where the computersystem receives event data while recording the game play. The event datacan include identifiers of the objects, indicate timing information andpossible outcomes. For instance, the event data includes a zoneidentifier of a zone, an activity identifier, a mechanic identifier, astart of the activity corresponding to the activity identifier, an endof the activity, an outcome of the activity, a change to the mechaniccorresponding to the mechanic identifier, an impact of using themechanic, and a change to another mechanic.

In an example, the flow includes operation 1206, where the computersystem generates first associations of the video content with theidentifiers and second associations of the video portions with thetiming information. For instance, the first associations indicate thatthe video content show the zone, the activity, and the mechanic. Thesecond associations indicate the video portions that show the zone, theactivity, and the mechanic. The various associations and resulting linkscan be generated as described in connection with FIG. 10 above.

In an example, the flow includes operation 1208, where the computersystem stores the associations in a data store (e.g., the data store 152of FIG. 1 ). For instance, the first and second associations are storedin connection with a user identifier that identifies the video gameplayer and a video game identifier that identifies the video game.

In an example, the flow includes operation 1210, where the computersystem sends the video content to a content system based on a request ofthe video game player to share the video content. For instance, thevideo content is uploaded to a third party system (e.g., the third partysystem 190 of FIG. 1 ) and/or stored in the data store.

In an example, the flow includes operation 1212, where the computersystem stores, in the data store, an indication of the video contentbeing shared. Because the video content is shared, this video content orvideo portions thereof can become candidate video content or candidatevideo portions usable to provide help assistance to other users. Inother words, links to the video content and/or video portions can beprovided to computing devices of such users based on the indication inthe data store that the video content is shared.

FIG. 13 illustrates another example of presenting a video portion of thevideo content as help assistance to a user, according to embodiments ofthe present disclosure.

In an example, the flow includes operation 1302, where the computersystem determines that the user has not completed an activity. Forinstance, event data stored in association with a user identifier of theuser exclude an activity identifier of the activity.

In an example, the flow includes operation 1304, where the computersystem determines video portions associated with the activity. Forinstance, the video portions are available from video content showingthe game play of other video game players. The computer system uses theactivity identifier to look-up the data store and identify the videoportions based on the stored associations. The video portions that showthe activity and do not include spoilers are added to a set of candidatevideo portion.

In an example, the flow includes operation 1306, where the computersystem ranks the candidate video portions. For instance, a number ofsort factors, such as the ones described in connection with FIG. 11 ,are used to generate a relevance score for each candidate video portionand the video portions are ranked according to their relevance scores.

In an example, the flow includes operation 1308, where the computersystem presents information about the video portions. For instance, thetop three (or some other number) ranked video portions are selected. Theinformation about each the selected video portions includes a link tothe video game portion and is sent to the video game console forpresentation in a user interface, such as in the GUIs of FIGS. 6-9 . Inan illustration, each link to the top three ranked may be presented oneach page within the user interface 604 of FIG. 6 and the order of thepages may be determined based on the rank of the video portions (e.g.,the highest ranked video portion or link thereof may be presented on thefirst page, while the next ranked video portion or link thereof may bepresented on the next page accessible via a user interaction with theselection bar 610). In another illustration, multiple links to the videoportions may be displayed in a same page and presented in the orderbased on the ranking (e.g., the highest ranked video portion or linkthereof may be presented in the left thumbnail of a series of thumbnailin the page).

FIG. 14 illustrates an example of a hardware system suitable forimplementing a computer system 1400, according to embodiments of thepresent disclosure. The computer system 1400 represents, for example, avideo game console, a video game platform, or other types of a computersystem. The computer system 1400 includes a central processing unit(CPU) 1402 for running software applications and optionally an operatingsystem. The CPU 1402 may be made up of one or more homogeneous orheterogeneous processing cores. Memory 1404 stores applications and datafor use by the CPU 1402. Storage 1406 provides non-volatile storage andother computer readable media for applications and data and may includefixed disk drives, removable disk drives, flash memory devices, andCD-ROM, DVD-ROM, Blu-ray, HD-DVD, or other optical storage devices, aswell as signal transmission and storage media. User input devices 1408communicate user inputs from one or more users to the computer system1400, examples of which may include keyboards, mice, joysticks, touchpads, touch screens, still or video cameras, and/or microphones. Networkinterface 1410 allows the computer system 1400 to communicate with othercomputer systems via an electronic communications network, and mayinclude wired or wireless communication over local area networks andwide area networks such as the Internet. An audio processor 1412 isadapted to generate analog or digital audio output from instructionsand/or data provided by the CPU 1402, memory 1404, and/or storage 1406.The components of computer system 1400, including the CPU 1402, memory1404, data storage 1406, user input devices 1408, network interface1410, and audio processor 1412 are connected via one or more data buses1460.

A graphics subsystem 1430 is further connected with the data bus 1460and the components of the computer system 1400. The graphics subsystem1430 includes a graphics processing unit (GPU) 1432 and graphics memory1434. The graphics memory 1434 includes a display memory (e.g., a framebuffer) used for storing pixel data for each pixel of an output image.The graphics memory 1434 can be integrated in the same device as the GPU1432, connected as a separate device with the GPU 1432, and/orimplemented within the memory 1404. Pixel data can be provided to thegraphics memory 1434 directly from the CPU 1402. Alternatively, the CPU1402 provides the GPU 1432 with data and/or instructions defining thedesired output images, from which the GPU 1432 generates the pixel dataof one or more output images. The data and/or instructions defining thedesired output images can be stored in the memory 1404 and/or graphicsmemory 1434. In embodiments, the GPU 1432 includes 3D renderingcapabilities for generating pixel data for output images frominstructions and data defining the geometry, lighting, shading,texturing, motion, and/or camera parameters for a scene. The GPU 1432can further include one or more programmable execution units capable ofexecuting shader programs.

The graphics subsystem 1430 periodically outputs pixel data for an imagefrom the graphics memory 1434 to be displayed on the display device1450. The display device 1450 can be any device capable of displayingvisual information in response to a signal from the computer system1400, including CRT, LCD, plasma, and OLED displays. The computer system1400 can provide the display device 1450 with an analog or digitalsignal.

In accordance with various embodiments, the CPU 1402 is one or moregeneral-purpose microprocessors having one or more processing cores.Further embodiments can be implemented using one or more CPUs 1402 withmicroprocessor architectures specifically adapted for highly paralleland computationally intensive applications, such as media andinteractive entertainment applications.

The components of a system may be connected via a network, which may beany combination of the following: the Internet, an IP network, anintranet, a wide-area network (“WAN”), a local-area network (“LAN”), avirtual private network (“VPN”), the Public Switched Telephone Network(“PSTN”), or any other type of network supporting data communicationbetween devices described herein, in different embodiments. A networkmay include both wired and wireless connections, including opticallinks. Many other examples are possible and apparent to those skilled inthe art in light of this disclosure. In the discussion herein, a networkmay or may not be noted specifically.

In the foregoing specification, the invention is described withreference to specific embodiments thereof, but those skilled in the artwill recognize that the invention is not limited thereto. Variousfeatures and aspects of the above-described invention may be usedindividually or jointly. Further, the invention can be utilized in anynumber of environments and applications beyond those described hereinwithout departing from the broader spirit and scope of thespecification. The specification and drawings are, accordingly, to beregarded as illustrative rather than restrictive.

It should be noted that the methods, systems, and devices discussedabove are intended merely to be examples. It must be stressed thatvarious embodiments may omit, substitute, or add various procedures orcomponents as appropriate. For instance, it should be appreciated that,in alternative embodiments, the methods may be performed in an orderdifferent from that described, and that various steps may be added,omitted, or combined. Also, features described with respect to certainembodiments may be combined in various other embodiments. Differentaspects and elements of the embodiments may be combined in a similarmanner. Also, it should be emphasized that technology evolves and, thus,many of the elements are examples and should not be interpreted to limitthe scope of the invention.

Specific details are given in the description to provide a thoroughunderstanding of the embodiments. However, it will be understood by oneof ordinary skill in the art that the embodiments may be practicedwithout these specific details. For example, well-known circuits,processes, algorithms, structures, and techniques have been shownwithout unnecessary detail in order to avoid obscuring the embodiments.

Also, it is noted that the embodiments may be described as a process,which is depicted as a flow diagram or block diagram. Although each maydescribe the operations as a sequential process, many of the operationscan be performed in parallel or concurrently. In addition, the order ofthe operations may be rearranged. A process may have additional stepsnot included in the figure.

Moreover, as disclosed herein, the term “memory” or “memory unit” mayrepresent one or more devices for storing data, including read-onlymemory (ROM), random access memory (RAM), magnetic RAM, core memory,magnetic disk storage mediums, optical storage mediums, flash memorydevices, or other computer-readable mediums for storing information. Theterm “computer-readable medium” includes, but is not limited to,portable or fixed storage devices, optical storage devices, wirelesschannels, a sim card, other smart cards, and various other mediumscapable of storing, containing, or carrying instructions or data.

Furthermore, embodiments may be implemented by hardware, software,firmware, middleware, microcode, hardware description languages, or anycombination thereof. When implemented in software, firmware, middleware,or microcode, the program code or code segments to perform the necessarytasks may be stored in a computer-readable medium such as a storagemedium. Processors may perform the necessary tasks.

Unless otherwise stated, all measurements, values, ratings, positions,magnitudes, sizes, and other specifications that are set forth in thisspecification, including in the claims that follow, are approximate, notexact. They are intended to have a reasonable range that is consistentwith the functions to which they relate and with what is customary inthe art to which they pertain. “About” includes within a tolerance of±0.01%, ±0.1%, ±1%, ±2%, ±3%, ±4%, ±5%, ±8%, ±10%, ±15%, ±20%, ±25%, oras otherwise known in the art. “Substantially” refers to more than 66%,155%, 80%, 90%, 95%, 99%, 99.9% or, depending on the context withinwhich the term substantially appears, value otherwise as known in theart.

Having described several embodiments, it will be recognized by those ofskill in the art that various modifications, alternative constructions,and equivalents may be used without departing from the spirit of theinvention. For example, the above elements may merely be a component ofa larger system, wherein other rules may take precedence over orotherwise modify the application of the invention. Also, a number ofsteps may be undertaken before, during, or after the above elements areconsidered. Accordingly, the above description should not be taken aslimiting the scope of the invention.

What is claimed is:
 1. A method implemented by a computer system, themethod including: accessing, using an identifier of an activity definedby program code of a video game, videos showing separate completions ofthe activity by a plurality of video game players; determining, from adefinition of the activity by the program code of the video game, thatthe activity is a parent of sub-activities; generating links to videoportions of the videos, wherein each video portion corresponds to afirst sub-activity of the sub-activities; generating a score for eachvideo portion based on a relevance of each video portion to a user; andpresenting the links in a user interface to the user based on the scorefor each video portion, wherein upon selection by the user of a firstlink of the links, the user interface displays a first video of thevideos to the user starting at a first video portion showing a firstcompletion of the first sub-activity by a first video game player of theplurality of video game players.
 2. The method of claim 1, furtherincluding: recording a first game play of the first video game player asthe first video; while recording the first game play, receiving one ormore events that include the identifier, a second identifier of thefirst sub-activity, a start of the first sub-activity, an end of thefirst sub-activity, and an outcome of completing the first sub-activityby the first video game player; generating one or more associations ofthe first video with the identifier, and of the first video portion ofthe first video with the start and the end; and storing the one or moreassociations in a data store.
 3. The method of claim 2, furtherincluding: sending the first video to a content system based on arequest of the first video game player to share the first video; andstoring, in the data store, an indication of the first video beingshared, wherein the first link is included in the user interface basedon the indication.
 4. The method of claim 3, wherein the links arepresented in a window over video game content of the video game, andfurther including: receiving the selection of the first link presentedin the window; and receiving the first video from the content systembased on the selection.
 5. The method of claim 4, further including:presenting the first video of the first game play over the video gamecontent of the video game.
 6. The method of claim 4, wherein the windowfurther includes at least one of: (i) a first option to present thefirst video of the first game play adjacent to and simultaneously with apresentation of the video game content of the video game, or (ii) asecond option to present the first video of the first game play in apicture-in-picture window over and simultaneously with the presentationof the video game content of the video game.
 7. The method of claim 4,wherein the window further includes a map that corresponds to a zonewithin the video game, wherein the map indicates an estimated positionwhere the plurality of video game players completed the activity withinthe zone.
 8. The method of claim 4, wherein the window further includesinformation about using a mechanic to complete the activity based on ahistory of use of the mechanic by the plurality of video game players.9. The method of claim 1, further including: selecting a predefinednumber of the video portions with the highest scores, wherein the linkspresented in the user interface include only the links to the predefinednumber of the video portions with the highest scores.
 10. A computersystem including: one or more processors; and one or more memoriesstoring computer-readable instructions that, upon execution by the oneor more processors, configure the computer system to: access, using anidentifier of an activity defined by program code of a video game,videos showing separate completions of the activity by a plurality ofvideo game players; determine, from a definition of the activity by theprogram code of the video game, that the activity is a parent ofsub-activities; generate links to video portions of the videos, whereineach video portion corresponds to a first sub-activity of thesub-activities; generating a score for each video portion based on arelevance of each video portion to a user; and present the links in auser interface to the user based on the score for each video portion,wherein upon selection by the user of a first link of the links, theuser interface displays a first video of the videos to the user startingat a first video portion showing a first completion of the firstsub-activity by a first video game player of the plurality of video gameplayers.
 11. The computer system of claim 10, wherein the execution ofthe computer-readable instructions further configure the computer systemto: determine that the user and the first video game player have a samelanguage setting; and increase the score for the first video portionrelative to the score for other video portions showing completions ofthe first sub-activity by video game players with a different languagesetting.
 12. The computer system of claim 10, wherein the execution ofthe computer-readable instructions further configure the computer systemto: determine that the first video portion shows a use of a mechanic bythe first video game player to complete the first sub-activity;determine that the mechanic is available for use by the user; andincrease the score for the first video portion relative to the score forother video portions showing completions of the first sub-activity usingother mechanics not available to the user.
 13. The computer system ofclaim 10, wherein the execution of the computer-readable instructionsfurther configure the computer system to: determine that the user andthe first video game player have a same characteristic; and increase thescore for the first video portion relative to the score for other videoportions showing completions of the first sub-activity by video gameplayers with a different characteristic.
 14. The computer system ofclaim 10, wherein the execution of the computer-readable instructionsfurther configure the computer system to: determine that the user andthe first video game player have a same difficulty setting; and increasethe score for the first video portion relative to the score for othervideo portions showing completions of the first sub-activity by videogame players with a different difficulty setting.
 15. The computersystem of claim 10, wherein the execution of the computer-readableinstructions further configure the computer system to: determine that acompletion time in which the first video game player completed the firstsub-activity is within a predefined range of completion times for thefirst sub-activity; and increase the score for the first video portionrelative to the score for other video portions with completion timesthat are outside the predefined range of completion times for the firstsub-activity.
 16. The computer system of claim 10, wherein the executionof the computer-readable instructions further configure the computersystem to: determine that the first video portion includes microphoneaudio of the first video game player; and increase the score for thefirst video portion relative to the score for other video portions withthat do not include microphone audio.
 17. The computer system of claim10, wherein the execution of the computer-readable instructions furtherconfigure the computer system to: determine a success rate of the firstvideo portion, wherein the success rate is determined by at least:receiving, after a presentation of the first video portion to a secondvideo game player, data including an identifier of the firstsub-activity and indicating a successful completion of the firstsub-activity by the second video game player, and updating the successrate based on the data; and increase the score for the first videoportion relative to the score for other video portions a lower successrate.
 18. One or more non-transitory computer-readable storage mediastoring instructions that, upon execution on a computer system, causethe computer system to perform operations including: accessing, using anidentifier of an activity defined by program code of a video game,videos showing separate completions of the activity by a plurality ofvideo game players; determining, from a definition of the activity bythe program code of the video game, that the activity is a parent ofsub-activities; generating links to video portions of the videos,wherein each video portion corresponds to a first sub-activity of thesub-activities; generating a score for each video portion based on arelevance of each video portion to a user; and presenting the links in auser interface to the user based on the score for each video portion,wherein upon selection by the user of a first link of the links, theuser interface displays a first video of the videos to the user startingat a first video portion showing a first completion of the firstsub-activity by a first video game player of the plurality of video gameplayers.
 19. The one or more non-transitory computer-readable storagemedia of claim 18, wherein the operations further include: presenting,in the user interface, a window in a first state, the window identifyingthe activity and presented over video game content of the video game;presenting the window in an expanded state upon a user selection of theactivity, the window in the expanded state identifying thesub-activities of the activity; and updating the window in the expandedstate to show the links upon a user selection of the first sub-activityfrom the sub-activities of the activity.
 20. The one or morenon-transitory computer-readable storage media of claim 19, wherein thewindow is updated to further show at least one of (i) a map within azone of the video game to complete the first sub-activity or (ii) secondinformation about using a mechanic to complete the first sub-activity,wherein the at least one of (i) the map or (ii) the second informationare shown simultaneously with the links to the video portions.